package com.ruoyi.web.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 贷款申请对象 money
 * 
 * @author ruoyi
 * @date 2025-06-04
 */
public class Money extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 贷款申请编号 */
    @Excel(name = "贷款申请编号")
    private String applicationNo;

    /** 申请人ID */
    @Excel(name = "申请人ID")
    private Long userId;

    /** 贷款产品ID */
    @Excel(name = "贷款产品ID")
    private Long productId;

    /** 申请贷款金额 */
    @Excel(name = "申请贷款金额")
    private BigDecimal loanAmount;

    /** 贷款期限(月) */
    @Excel(name = "贷款期限(月)")
    private Long loanTerm;

    /** 年利率 */
    @Excel(name = "年利率")
    private BigDecimal annualRate;

    /** 还款方式(1-等额本息,2-等额本金,3-先息后本,4-一次性还本付息) */
    @Excel(name = "还款方式(1-等额本息,2-等额本金,3-先息后本,4-一次性还本付息)")
    private Long repaymentMethod;

    /** 贷款用途 */
    @Excel(name = "贷款用途")
    private String loanPurpose;

    /** 收款银行卡ID */
    @Excel(name = "收款银行卡ID")
    private Long bankCardId;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationTime;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date approvalTime;

    /** 审批状态(0-待审核,1-审核通过,2-审核拒绝,3-审核中) */
    @Excel(name = "审批状态(0-待审核,1-审核通过,2-审核拒绝,3-审核中)")
    private Long approvalStatus;

    /** 审批意见 */
    @Excel(name = "审批意见")
    private String approvalComment;

    /** 审批人ID */
    @Excel(name = "审批人ID")
    private Long approverId;

    /** 合同状态(0-未生成,1-已生成,2-已签署,3-已作废) */
    @Excel(name = "合同状态(0-未生成,1-已生成,2-已签署,3-已作废)")
    private Long contractStatus;

    /** 放款状态(0-未放款,1-放款中,2-已放款,3-放款失败) */
    @Excel(name = "放款状态(0-未放款,1-放款中,2-已放款,3-放款失败)")
    private Long disbursementStatus;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setApplicationNo(String applicationNo) 
    {
        this.applicationNo = applicationNo;
    }

    public String getApplicationNo() 
    {
        return applicationNo;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }

    public void setLoanAmount(BigDecimal loanAmount) 
    {
        this.loanAmount = loanAmount;
    }

    public BigDecimal getLoanAmount() 
    {
        return loanAmount;
    }

    public void setLoanTerm(Long loanTerm) 
    {
        this.loanTerm = loanTerm;
    }

    public Long getLoanTerm() 
    {
        return loanTerm;
    }

    public void setAnnualRate(BigDecimal annualRate) 
    {
        this.annualRate = annualRate;
    }

    public BigDecimal getAnnualRate() 
    {
        return annualRate;
    }

    public void setRepaymentMethod(Long repaymentMethod) 
    {
        this.repaymentMethod = repaymentMethod;
    }

    public Long getRepaymentMethod() 
    {
        return repaymentMethod;
    }

    public void setLoanPurpose(String loanPurpose) 
    {
        this.loanPurpose = loanPurpose;
    }

    public String getLoanPurpose() 
    {
        return loanPurpose;
    }

    public void setBankCardId(Long bankCardId) 
    {
        this.bankCardId = bankCardId;
    }

    public Long getBankCardId() 
    {
        return bankCardId;
    }

    public void setApplicationTime(Date applicationTime) 
    {
        this.applicationTime = applicationTime;
    }

    public Date getApplicationTime() 
    {
        return applicationTime;
    }

    public void setApprovalTime(Date approvalTime) 
    {
        this.approvalTime = approvalTime;
    }

    public Date getApprovalTime() 
    {
        return approvalTime;
    }

    public void setApprovalStatus(Long approvalStatus) 
    {
        this.approvalStatus = approvalStatus;
    }

    public Long getApprovalStatus() 
    {
        return approvalStatus;
    }

    public void setApprovalComment(String approvalComment) 
    {
        this.approvalComment = approvalComment;
    }

    public String getApprovalComment() 
    {
        return approvalComment;
    }

    public void setApproverId(Long approverId) 
    {
        this.approverId = approverId;
    }

    public Long getApproverId() 
    {
        return approverId;
    }

    public void setContractStatus(Long contractStatus) 
    {
        this.contractStatus = contractStatus;
    }

    public Long getContractStatus() 
    {
        return contractStatus;
    }

    public void setDisbursementStatus(Long disbursementStatus) 
    {
        this.disbursementStatus = disbursementStatus;
    }

    public Long getDisbursementStatus() 
    {
        return disbursementStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("applicationNo", getApplicationNo())
            .append("userId", getUserId())
            .append("productId", getProductId())
            .append("loanAmount", getLoanAmount())
            .append("loanTerm", getLoanTerm())
            .append("annualRate", getAnnualRate())
            .append("repaymentMethod", getRepaymentMethod())
            .append("loanPurpose", getLoanPurpose())
            .append("bankCardId", getBankCardId())
            .append("applicationTime", getApplicationTime())
            .append("approvalTime", getApprovalTime())
            .append("approvalStatus", getApprovalStatus())
            .append("approvalComment", getApprovalComment())
            .append("approverId", getApproverId())
            .append("contractStatus", getContractStatus())
            .append("disbursementStatus", getDisbursementStatus())
            .append("remark", getRemark())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
